﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace StrategyGame
{
    /// <summary>
    /// This interface represents an in-progress construction job at a city
    /// </summary>
    interface IConstructionProject
    {
        /// <summary>
        /// Called when the job finishes to construct the job output
        /// </summary>
        /// <returns>The object built by the project</returns>
        void FinishProject(City finished_at_city);

        /// <summary>
        /// Checks if it's possible to build this project at a city, returning a descriptive error string if not
        /// </summary>
        /// <returns>
        /// An error message if the project cannot be built at this city, otherwise null for no errors
        /// The return type is an array of strings for multi-line messages
        /// </returns>
        string[] GetProblemsBuildingThis(City at_city);

        string[] InfoText { get; }

        int ManpowerRequired { get; }

        Texture2D ProjectIcon { get; }
        string ProjectName { get; }
    }
}
